package com.wxd;

import org.apache.catalina.LifecycleException;
import org.apache.catalina.startup.Tomcat;

import java.io.File;

/**
 * 在springboot中启动应用，调用的是SpringApplication的静态方法run(Class<?> main, Object... args)来传入主类和参数启动应用。
 * 参考springboot的实现，我们这里也可以定义一个MySpringApplication，仿照SpringApplication，提供run方法来启动主类。
 */
public class SpringApplication {
    // 1.run方法内部要完成tomcat的创建和启动
    public static void run(Class<?> primaryClass, Object... args) throws LifecycleException {
        try {
            // 创建Tomcat服务器
            Tomcat tomcat = new Tomcat();
            // 指定端口号
            tomcat.setPort(8080);
            // 设置contextPath
            tomcat.addWebapp("/", new File("src/main").getAbsolutePath());
            // 启动Tomcat
            tomcat.start();
            System.out.println("Tomcat服务器启动成功...");
            // 只调用start方法启动tomcat还不够，还需要开启socket服务端，等待接收客户端的请求
            tomcat.getServer().await();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}